﻿// ***********************************************************************
// Assembly         : Logica
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="LOG_Proveedores.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using AccesoDatos.Modulos.ClasesAccesoDatos;
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesLogica namespace.
/// </summary>
namespace Logica.Modulos.ClasesLogica
{
    /// <summary>
    /// Class LOG_Proveedores.
    /// </summary>
    public class LOG_Proveedores:Negocio
    {
        //insertar proveedores
        /// <summary>
        /// Crs the e_ proveedor.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void CRE_Proveedor(MOD_Proveedores obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proveedores objBD = new AD_Proveedores();

                objBD.CRE_Proveedor(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        //Elimina Proveedores

        /// <summary>
        /// Des the l_ proveedores.
        /// </summary>
        /// <param name="codigo">The codigo.</param>
        public void DEL_Proveedores(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proveedores objBD = new AD_Proveedores();

                objBD.DEL_proveedor(this.comando, codigo);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        //Actualiza Proveedores
        /// <summary>
        /// Ups the d_ proveedores.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void UPD_Proveedores(MOD_Proveedores obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proveedores objBD = new AD_Proveedores();

                objBD.UPD_Proveedor(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }

        }

        //consultar grid proveedores

        /// <summary>
        /// Ses the l_ grid_ proveedores.
        /// </summary>
        /// <returns>List{MOD_Proveedores}.</returns>
        public List<MOD_Proveedores> SEL_Grid_Proveedores()
        {
            try
            {
                this.AbrirConexion();

                AD_Proveedores objBD = new AD_Proveedores();

                List<MOD_Proveedores> lista = objBD.SEL_Grid_Proveedores(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        //Seleccionar proveedores by id
        /// <summary>
        /// Ses the l_ proveedores by identifier.
        /// </summary>
        /// <param name="PRO_CODPROVEEDOR">The pr o_ codproveedor.</param>
        /// <returns>MOD_Proveedores.</returns>
        public MOD_Proveedores SEL_ProveedoresByID(int PRO_CODPROVEEDOR)
        {
            try
            {
                this.AbrirConexion();

                AD_Proveedores objBD = new AD_Proveedores();

                MOD_Proveedores objProveedor = objBD.SEL_ProveedorByID(this.comando, PRO_CODPROVEEDOR);

                this.CerrarConexion();

                return objProveedor;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        //Seleccionar Estado Proveedor
        /// <summary>
        /// Ses the l_ estproveedor.
        /// </summary>
        /// <returns>List{MOD_Proveedores}.</returns>
        public List<MOD_Proveedores> SEL_ESTPROVEEDOR()
        {
            try
            {
                this.AbrirConexion();

                AD_Proveedores objBD = new AD_Proveedores();

                List<MOD_Proveedores> lista = objBD.SEL_ESTPROVEEDOR(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        //Seleccionar proveedor by nit ,verifiaca que al crear un cliente no esté repetido
        /// <summary>
        /// Ses the l_ proveedor by nit.
        /// </summary>
        /// <param name="PRO_NIT">The pr o_ nit.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_ProveedorByNIT(string PRO_NIT)
        {
            try
            {
                this.AbrirConexion();

                AD_Proveedores objBD = new AD_Proveedores();

                int cant_pro = objBD.SEL_ProveedorByNIT(this.comando, PRO_NIT);

                this.CerrarConexion();

                return cant_pro;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        /// <summary>
        /// Crs the e_ proveedor material.
        /// </summary>
        /// <param name="CodProveedor">The cod proveedor.</param>
        /// <param name="CodMaterial">The cod material.</param>
        public void CRE_ProveedorMaterial(int CodProveedor,int CodMaterial)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proveedores objBD = new AD_Proveedores();

                objBD.CRE_ProveedorMaterial(this.comando, CodProveedor,CodMaterial);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ grid_ materiales proveedores.
        /// </summary>
        /// <param name="codMaterial">The cod material.</param>
        /// <returns>List{MOD_Proveedores}.</returns>
        public List<MOD_Proveedores> SEL_Grid_MaterialesProveedores(int codMaterial)
        {
            try
            {
                this.AbrirConexion();

                AD_Proveedores objBD = new AD_Proveedores();

                List<MOD_Proveedores> lista = objBD.SEL_Grid_MaterialesProveedores(this.comando, codMaterial);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        /// <summary>
        /// Ses the l_ proveedor material by i ds.
        /// </summary>
        /// <param name="codMaterial">The cod material.</param>
        /// <param name="codProveedor">The cod proveedor.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_ProveedorMaterialByIDs(int codMaterial, int codProveedor)
        {
            try
            {
                this.AbrirConexion();

                AD_Proveedores objBD = new AD_Proveedores();

                int cant_pro = objBD.SEL_ProveedorMaterialByIDs(this.comando, codMaterial, codProveedor);

                this.CerrarConexion();

                return cant_pro;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        /// <summary>
        /// Des the l_ proveedor material.
        /// </summary>
        /// <param name="codProveedor">The cod proveedor.</param>
        /// <param name="codMaterial">The cod material.</param>
        public void DEL_ProveedorMaterial(int codProveedor, int codMaterial)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proveedores objBD = new AD_Proveedores();

                objBD.DEL_ProveedorMaterial(this.comando, codProveedor, codMaterial);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }
    }
}
